Because of the limitations imposed by packaging of integrated circuits, relatively few terminal pins are available to carry signals to and from the integrated circuit. It is imperative in many applications to make any given pin serve several functions. In some instances, a pin conducts an input signal, in another instance, a pin conducts an output signal. In another instances, a pin is to serve as both an input and an output terminal. The pin in the latter instance is deemed an output terminal, for example, but can be operated as input pin by assertion of a complemented output enable signal, by execution of an instruction, or by changing a configuration register.
In the prior art it has been possible to enable an output pin by either execution of an instruction (software) or by application of a signal at another pin of the integrated circuit (hardware).
However, since the former software enable is to be done synchronously, while the latter hardware enable is to be done asynchronously, the two methods have not both been available from a single pin.
In a state machine or a "sequencer", for example, it is desirable to permit enablement of a pin as an input or an output terminal either synchronously by software or asynchronously by hardware. This is because a sequencer is typically responsive both to an internal control program which is executed as a series of instructions, as well as to control signals applied externally by a microprocessor.